package info.demo.acao;

import info.demo.entity.Conta;
import info.demo.entity.ContaPesquisa;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

public class ContaForm {

	public static Conta montaEntidade(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		
		Conta conta = new Conta();
		atualizar(conta, mapping, form, request, response);
		return conta;
		
		
	}

	public static void atualizarEntidade(Conta entidade, ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		atualizar(entidade, mapping, form, request, response);
	}
	
	private static void atualizar(Conta conta, ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		DynaActionForm dynaForm = (DynaActionForm)form;
		conta.setConta(dynaForm.getString("conta"));
		conta.setDataPaga(Formulario.paraData(dynaForm.getString("dataPaga"),null));
		conta.setPaga("true".equalsIgnoreCase(dynaForm.getString("paga")));
		conta.setDataVencimento(Formulario.paraData(dynaForm.getString("dataVencimento"),null));
		conta.setDocumento(dynaForm.getString("documento"));
		conta.setGrupoConta(dynaForm.getString("grupoConta").trim());
		conta.setObs(dynaForm.getString("obs"));
		conta.setValor(Formulario.paraValor(dynaForm.getString("valor"), 0d));
		conta.setValorPago(Formulario.paraValor(dynaForm.getString("valorPago"), 0d));
	}

	public static ContaPesquisa montaPesquisa(HttpServletRequest request) {
		ContaPesquisa contaPesquisa = new ContaPesquisa();
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			contaPesquisa.colunaData = request.getParameter("colunaData");
			contaPesquisa.dataFim = sdf.parse(request.getParameter("dataFim"));
			contaPesquisa.dataInicio = sdf.parse(request.getParameter("dataInicio"));
		}catch(Throwable t) {
			contaPesquisa.colunaData = null;
			contaPesquisa.dataFim = null;
			contaPesquisa.dataInicio = null;
		}
		contaPesquisa.grupos = request.getParameter("grupos");
		contaPesquisa.numero = request.getParameter("numeroDoc");
		contaPesquisa.opcoes = request.getParameter("opcoes");
		contaPesquisa.titulo = request.getParameter("titulo");
		return contaPesquisa;
	}

	public static Conta[] montaEntidadesMultiplas(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		
		int numContas = request.getParameterValues("conta").length;
		Conta contas[]=new Conta[numContas];
		
		for(int x=0;x<numContas;x++) {		
			contas[x]=new Conta();
			Conta conta = contas[x];
			conta.setConta(request.getParameterValues("conta")[x]);
			conta.setDataPaga(Formulario.paraData(request.getParameterValues("dataPaga")[x],null));
			conta.setPaga(false);
			conta.setDataVencimento(Formulario.paraData(request.getParameterValues("dataVencimento")[x],null));
			conta.setDocumento(request.getParameterValues("documento")[x]);
			conta.setGrupoConta(request.getParameter("grupoConta").trim());
			conta.setObs("");
			conta.setValor(Formulario.paraValor(request.getParameterValues("valor")[x], 0d));
			conta.setValorPago(Formulario.paraValor(request.getParameterValues("valorPago")[x], 0d));
		}
		
		return contas;
		
	}

}
